package com.boyue.web.controller;

import com.boyue.entity.SysMenu;
import com.boyue.entity.vo.MenuVo;
import com.boyue.service.SysMenuService;
import com.boyue.service.impl.SysMenuServiceImpl;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;

/**
 * @auth wzy
 * @date 2023/9/8 15:30
 */
public class SysMenuController {

    private SysMenuService sysMenuService = new SysMenuServiceImpl();

    public List<MenuVo> tree(HttpServletRequest request, HttpServletResponse response){

        // 需要返回到页面的数据（将会转成json）
        List<MenuVo> menuVoList = new ArrayList<MenuVo>();

        // 拿到树结构的菜单
        List<SysMenu> sysMenus = sysMenuService.treeMenu();

        // 将菜单转成 MenuVo
        sysMenus.forEach(menu -> {
            MenuVo menuVo = menuToVo(menu);
            menuVoList.add(menuVo);
        });

        return menuVoList;
    }

    private MenuVo menuToVo(SysMenu menu){

        // 菜单类型的转换
        Long type = Long.valueOf(2);

        switch (menu.getMenuType()) {
            case "M":
                type = Long.valueOf(0);
                break;
            case "C":
                type = Long.valueOf(1);
                break;
        }

        // 普通属性的转换处理
        MenuVo menuVo = new MenuVo(menu.getMenuId(),menu.getMenuName(),menu.getIcon(),type,menu.getPath());

        // 子菜单属性转换处理
        if (menu.getChildren() != null && menu.getChildren().size()>0) {
            menu.getChildren().forEach(child -> {
                MenuVo childMenuVo = menuToVo(child);
                menuVo.getChildren().add(childMenuVo);
            });
        }

        return menuVo;
    }
}
